package com.xxxtea.util;

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import lombok.experimental.UtilityClass;

import java.util.Date;

/**
 * 文件工具类
 * 
 * 提供文件操作相关的工具方法，包括：
 * - 文件名生成：基于时间戳和UUID生成唯一文件名
 * - 文件扩展名处理
 * - 其他文件操作功能
 * 
 * 使用@UtilityClass注解，表示这是一个工具类，不能被实例化
 * 
 * @author badman
 * @since 1.0.0
 */
@UtilityClass
public class FileHelper {

	/**
	 * 生成UUID文件名
	 * 
	 * 根据原文件名生成一个唯一的文件名，格式为：
	 * 时间戳-UUID前8位.原文件扩展名
	 * 
	 * 例如：20231201143022-a1b2c3d4.jpg
	 * 
	 * @param filename 原文件名（包含扩展名）
	 * @return 生成的唯一文件名
	 */
	public String createUUID(String filename) {
		// 生成时间戳部分：纯数字格式的日期时间
		String name = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN)
				+ "-" + IdUtil.fastSimpleUUID().substring(0, 8);
		
		// 获取原文件的扩展名
		String suffix = FileUtil.getSuffix(filename);
		
		// 如果没有扩展名，直接返回生成的文件名
		if (StrUtil.isBlank(suffix)) {
			return name;
		}
		
		// 返回带扩展名的完整文件名
		return name + "." + suffix;
	}
}
